home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
United Public Domain Gold 2
/
United Public Domain Gold 2.iso
/
utilities
/
pu087.dms
/
pu087.adf
/
top
/
io.s
< prev
next >
Wrap
Text File
|
1990-12-06
|
4KB
|
346 lines
; io.c
SECTION NUM1,DATA
L0:
dc.l -1
L1:
dc.l L2
dc.l L3
dc.l L4
SECTION NUM2,BSS
XDEF _t_line
_t_line DS.B 4
XDEF _t_lab
_t_lab DS.B 4
XDEF _t_op
_t_op DS.B 4
XDEF _t_arg
_t_arg DS.B 4
L5: ds.b 2048
SECTION NUM3,CODE
XDEF _readline
_readline:
bra L7
L6:
L9:
move.l _ifp,-(sp)
move.l #2048,-(sp)
move.l #L5,-(sp)
jsr _fgets
add.w #12,sp
tst.l d0
bne L12
clr.l d0
bra L8
L12:
move.l #L5,_t_line
move.l #L5,-(sp)
jsr _tokenize
add.w #4,sp
move.l #L14,-(sp)
move.l _t_op,-(sp)
jsr _stricmp
add.w #8,sp
tst.l d0
bne L13
move.l _t_arg,-10(a6)
L15:
move.l -10(a6),a0
cmp.b #44,(a0)
beq L16
move.l -10(a6),a0
tst.b (a0)
beq L16
add.l #1,-10(a6)
bra L15
L16:
tst.l -10(a6)
beq L17
add.l #1,-10(a6)
clr.l -14(a6)
L18:
move.l -10(a6),a0
move.b (a0),d0
ext.w d0
ext.l d0
add.l #__ctype,d0
move.l d0,a0
clr.l d0
move.b (a0),d0
and.l #12,d0
beq L19
cmp.l #4,-14(a6)
bge L19
move.l -10(a6),a0
lea -5(a6),a1
add.l -14(a6),a1
move.b (a0),(a1)
add.l #1,-10(a6)
add.l #1,-14(a6)
bra L18
L19:
lea -5(a6),a0
add.l -14(a6),a0
clr.b (a0)
move.l L1,-(sp)
pea -5(a6)
jsr _stricmp
add.w #8,sp
tst.l d0
bne L20
clr.l L0
bra L10
bra L21
L20:
move.l L1+4,-(sp)
pea -5(a6)
jsr _stricmp
add.w #8,sp
tst.l d0
bne L22
move.l #1,L0
bra L10
bra L23
L22:
move.l L1+8,-(sp)
pea -5(a6)
jsr _stricmp
add.w #8,sp
tst.l d0
bne L24
move.l #2,L0
bra L10
L24:
L23:
L21:
L17:
bra L25
L13:
move.l #L27,-(sp)
move.l _t_op,-(sp)
jsr _stricmp
add.w #8,sp
tst.l d0
bne L26
bra L10
bra L28
L26:
move.l #L30,-(sp)
move.l _t_op,-(sp)
jsr _stricmp
add.w #8,sp
tst.l d0
bne L29
move.l _ofp,-(sp)
move.l #L5,-(sp)
jsr _fputs
add.w #8,sp
bra L10
L29:
L28:
L25:
cmp.l #2,L0
bne L31
move.l #1,d0
bra L8
L31:
move.l L0,-(sp)
jsr _store
add.w #4,sp
L10:
bra L9
L11:
L8:
unlk a6
rts
L7:
link a6,#-14
bra L6
_tokenize:
bra L33
L32:
move.l 8(a6),a3
move.l a3,-(sp)
move.l #L38,-(sp)
jsr _printf
add.w #8,sp
clr.l d3
L39:
tst.b (a3)
beq L40
cmp.b #9,(a3)
beq L41
cmp.b #32,(a3)
beq L41
cmp.b #10,(a3)
beq L41
clr d0
bra L42
L41: moveq #1,d0
L42:
tst.l d0
bne L40
cmp.b #58,(a3)
beq L40
move.l a3,d0
add.l #1,a3
move.l d0,a0
move.l d3,d0
add.l #1,d3
add.l #L35,d0
move.l d0,a1
move.b (a0),(a1)
bra L39
L40:
move.l #L35,d0
add.l d3,d0
move.l d0,a0
clr.b (a0)
move.l d3,-(sp)
move.l #L35,-(sp)
move.l a3,-(sp)
move.l #L45,-(sp)
jsr _printf
add.w #16,sp
cmp.b #58,(a3)
bne L46
add.l #1,a3
L46:
L47:
cmp.b #9,(a3)
beq L49
cmp.b #32,(a3)
beq L49
cmp.b #10,(a3)
bne L48
L49:
add.l #1,a3
bra L47
L48:
clr.l d3
L50:
tst.b (a3)
beq L51
cmp.b #9,(a3)
beq L52
cmp.b #32,(a3)
beq L52
clr d0
bra L53
L52: moveq #1,d0
L53:
tst.l d0
bne L54
cmp.b #10,(a3)
beq L54
clr d0
bra L55
L54: moveq #1,d0
L55:
tst.l d0
bne L51
move.l a3,d0
add.l #1,a3
move.l d0,a0
move.l d3,d0
add.l #1,d3
add.l #L36,d0
move.l d0,a1
move.b (a0),(a1)
bra L50
L51:
move.l #L36,d0
add.l d3,d0
move.l d0,a0
clr.b (a0)
L56:
cmp.b #9,(a3)
beq L58
cmp.b #32,(a3)
beq L58
cmp.b #10,(a3)
bne L57
L58:
add.l #1,a3
bra L56
L57:
clr.l d3
L59:
tst.b (a3)
beq L60
cmp.b #9,(a3)
beq L61
cmp.b #32,(a3)
beq L61
clr d0
bra L62
L61: moveq #1,d0
L62:
tst.l d0
bne L63
cmp.b #10,(a3)
beq L63
clr d0
bra L64
L63: moveq #1,d0
L64:
tst.l d0
bne L60
move.l a3,d0
add.l #1,a3
move.l d0,a0
move.l d3,d0
add.l #1,d3
add.l #L37,d0
move.l d0,a1
move.b (a0),(a1)
bra L59
L60:
move.l #L37,d0
add.l d3,d0
move.l d0,a0
clr.b (a0)
move.l #L37,-(sp)
move.l #L36,-(sp)
move.l #L35,-(sp)
move.l #L65,-(sp)
jsr _printf
add.w #16,sp
move.l #L35,_t_lab
move.l #L36,_t_op
move.l #L37,_t_arg
L34:
movem.l (sp)+,d3/a3
unlk a6
rts
L33:
link a6,#-0
movem.l d3/a3,-(sp)
bra L32
SECTION NUM4,BSS
L35: ds.b 2048
L36: ds.b 2048
L37: ds.b 2048
SECTION NUM5,DATA
L65: dc.b 'line -> |%s'
dc.b '| |%s| |%s|',$a
dc.b 0
L45: dc.b 'line .. |%s'
dc.b '| |%s| %d',$a
dc.b 0
L38: dc.b 'line |%s'
dc.b '|',$a
dc.b 0
L30: dc.b 'XDEF'
dc.b 0
L27: dc.b 'END'
dc.b 0
L14: dc.b 'SECTION'
dc.b 0
L4: dc.b 'code'
dc.b 0
L3: dc.b 'data'
dc.b 0
L2: dc.b 'bss'
dc.b 0
END